FROM python:3.10-slim

WORKDIR /app

ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH=/app

# 替换源
RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list.d/debian.sources

# 阶段1：基础工具（让服务先跑起来）
RUN apt-get update -y && apt-get install -y \
    curl wget unzip python3-pip \
    && rm -rf /var/lib/apt/lists/*

# 阶段2：Chrome 相关依赖
# 安装 Chrome 运行所需的库
RUN apt-get update -y && apt-get install -y \
    libxkbcommon0 \
    xvfb \
    libayatana-appindicator3-1 \
    fonts-liberation \
    libnss3 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libcups2 \
    libdrm2 \
    libxcomposite1 \
    libxdamage1 \
    libxrandr2 \
    libgbm1 \
    libxss1 \
    libasound2 \
    && rm -rf /var/lib/apt/lists/*

# 阶段3：音频视频相关（如果确实需要）
#RUN apt-get update -y && apt-get install -y \
#    ffmpeg libportaudio2 portaudio19-dev alsa-utils \
#    && rm -rf /var/lib/apt/lists/*

# 阶段4：开发工具（可选）
RUN apt-get update -y && apt-get install -y \
    gcc g++ gfortran \
    && rm -rf /var/lib/apt/lists/*

# 复制 Chrome 文件
COPY chrome-linux64.zip /app/
COPY chromedriver-linux64.zip /app/

# 1. 安装 Chrome 浏览器（从宿主机复制本地文件）
RUN set -eux; \
    # 复制宿主机的 chrome-linux64.zip 到容器内
    cp /app/chrome-linux64.zip /tmp/chrome.zip; \
    unzip -q /tmp/chrome.zip -d /opt; \
    rm /tmp/chrome.zip; \
    ln -s /opt/chrome-linux64/chrome /usr/local/bin/google-chrome; \
    ln -s /opt/chrome-linux64/chrome /usr/local/bin/chrome; \
    mkdir -p /opt/chrome; \
    ln -s /opt/chrome-linux64/chrome /opt/chrome/chrome; \
    google-chrome --version

# 2. 安装 ChromeDriver（从宿主机复制本地文件）
RUN set -eux; \
    # 复制宿主机的 chromedriver-linux64.zip 到容器内
    cp /app/chromedriver-linux64.zip /tmp/chromedriver.zip; \
    unzip -q /tmp/chromedriver.zip -d /tmp; \
    mv /tmp/chromedriver-linux64/chromedriver /usr/local/bin; \
    rm /tmp/chromedriver.zip; \
    chmod +x /usr/local/bin/chromedriver; \
    chromedriver --version

# Python 依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

COPY . .
RUN mkdir -p /workspace

EXPOSE 8000

# 更简单的健康检查，只检查端口是否监听
HEALTHCHECK --interval=30s --timeout=10s --start-period=180s --retries=3 \
    CMD curl -f http://localhost:8000/ || exit 1

CMD ["python", "main.py"]